package cn.csc.module.pay.controller.admin.jzborder.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.*;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.*;
import io.swagger.annotations.*;
import cn.csc.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.csc.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@ApiModel(value = "管理后台 - 见证宝订单表(冻结分账) Excel 导出 Request VO", description = "参数和 JzbOrderPageReqVO 是一致的")
@Data
public class JzbOrderExportReqVO {

    @ApiModelProperty(value = "交易日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] tradeDate;

    @ApiModelProperty(value = "商户ID")
    private BigInteger merchantId;

    @ApiModelProperty(value = "外部商家商户ID")
    private String appUserId;

    @ApiModelProperty(value = "订单金额")
    private BigDecimal amount;

    @ApiModelProperty(value = "支付订单ID")
    private BigInteger payOrderId;

    @ApiModelProperty(value = "支付订单交易号")
    private String tradeNo;

    @ApiModelProperty(value = "支付订单状态,0:等待付款,1:交易成功,2:付款失败,3:取消订单,4:退款申请中,5:退款成功,6:订单过期")
    private Integer tradeStatus;

    @ApiModelProperty(value = "交易类型,0:其他,1:支付,2:充值,3:提现,4:转账,5:消费 6:冻结充值")
    private Integer tradeType;

    @ApiModelProperty(value = "第三方返回订单流水号")
    private String thirdId;

    @ApiModelProperty(value = "第三方状态 0:待处理 5:失败 10:成功 ")
    private Integer thirdStatus;

    @ApiModelProperty(value = "见证宝冻结状态，是否冻结(0:待冻结，1:冻结成功, 2:冻结失败,3:撤销冻结成功 4:撤销冻结失败  5:分账成功 6:分账失败 7:撤销分账成功 8:撤销分账失败 9:订单还未清算)")
    private Integer jzbFreezeStatus;

    @ApiModelProperty(value = "支付成功订单同步到平安银行状态(0:未同步见证宝,1:已同步见证宝)")
    private Integer jzbStatus;

    @ApiModelProperty(value = "见证宝返回前置流水号")
    private String jzbFrontLogNo;

    @ApiModelProperty(value = "支付类型 0001-微信")
    private String payChannelType;

    @ApiModelProperty(value = "冻结充值电商见证宝系统生成的流水号")
    private String freezeRechargeSeq;

    @ApiModelProperty(value = "冻结充值子订单的单号")
    private String freezeRechargeNo;

    @ApiModelProperty(value = "冻结充值成功时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] freezeTime;

    @ApiModelProperty(value = "撤销冻结充值电商见证宝系统生成的流水号")
    private String refundFreezeSeq;

    @ApiModelProperty(value = "撤销冻结充值成功时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] refundFreezeTime;

    @ApiModelProperty(value = "分账电商见证宝系统生成的流水号")
    private String divideSeq;

    @ApiModelProperty(value = "分账订单的子订单号")
    private String divideNo;

    @ApiModelProperty(value = "分账成功时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] divideTime;

    @ApiModelProperty(value = "撤销分账电商见证宝系统生成的流水号")
    private String refundDivideSeq;

    @ApiModelProperty(value = "撤销分账成功时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime refundDivideTime;

    @ApiModelProperty(value = "手续费")
    private BigDecimal formality;

    @ApiModelProperty(value = "华正支付手续费率")
    private String handFeeRate;

    @ApiModelProperty(value = "备注")
    private String remarks;

    @ApiModelProperty(value = "创建时间(订单生成时间)")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

}
